package com.iris.live.services.data.repositories;

import com.iris.live.services.models.PageData;
import com.iris.live.services.requestbody.FinanceReceivablesBody;

import java.math.BigDecimal;
import java.util.List;

/**
 * 财务系统对接模块(新车收款模块)--持久层
 */
public interface FinanceReceivablesRepository {

    /**
     * 根据报价编号，得到订单信息
     * @param quotedNum
     * @return
     */
    List getOrderDetail(String quotedNum);

    /**
     * 款项历史列表
     * @param quotedNum
     * @return
     */
    PageData getMoneyHistory(String quotedNum,Integer pageSize,Integer pageIndex);

    /**
     * 获得订单总价
     * @param quotedNum
     * @return
     */
    BigDecimal getOrderTotalPrice(String quotedNum);

    /**
     * 挂账明细
     * @param FinId
     * @param pageSize
     * @param pageIndex
     * @return
     */
    PageData getHangAccountDetail(String FinId,Integer pageSize,Integer pageIndex);

    /**
     * 获取发票明细列表
     * @param quotedNum
     * @param pageSize
     * @param pageIndex
     * @return
     */
    PageData getInvoiceDetail(String quotedNum,Integer pageSize,Integer pageIndex);

    /**
     * 查询新车收款订单列表
     * @param body
     * @return
     */
    PageData getFinanceReceivablesList(FinanceReceivablesBody.NewCarReceivablesListBody body);

    /**
     * 获取收款详情中的车辆信息
     * @param vin
     * @return
     */
    List getReceivablesInfoByCar(String vin);

    /**
     * 获取收款详情中的订单信息
     * @param initQuoteNo
     * @return
     */
    List getReceivablesInfoByOrder(String initQuoteNo);

    /**
     * 获取收款详情中的款项信息
     * @param initQuoteNo
     * @return
     */
    List getReceivablesInfoByMoney(String initQuoteNo);

    /**
     * 获取收款详情中的操作部分信息
     * @param initQuoteNo
     * @return
     */
    List getReceivablesInfoByOperation(String initQuoteNo);

    /**
     * 根据订单编号和账目类型查询ID结合
     * @param typeName
     * @param initQuote
     * @return
     */
    List getIdListByAmountType(String typeName,String initQuote);

    /**
     * 根据id集合统计红冲总额
     * @param idList
     * @return
     */
    List getRedPushById(List idList);

    /**
     * 根据初始报价单号查询相关编号
     * @param initQuoteNo
     * @return
     */
    List getReceivablesInfoNo(String initQuoteNo);

    /**
     * /**
     * 挂账操作 --> 挂账类别 ——>选择挂账类型时 默认带出配对的相应额度
     * 通过报价编号 自动带出 临时授信金额，二手车置换估价值金额，金融贷款金额
     * @param quotedNum
     * @return
     */
    List getQuotaMoney(String quotedNum);

    /**
     * 精品明细
     * @param quotedNum 报价编号
     * @return
     */
    List getBoutiqueDetails(String quotedNum);

    /**
     * 保险明细
     * @param quotedNum
     * @return
     */
    List getInsuranceDetails(String quotedNum);

    /**
     * 获取保险信息
     * @param quotedNum
     * @return
     */
    List getInsuranceInfo(String quotedNum);

}
